package cn.iocoder.yudao.module.brokerage.merchant.service;

import cn.iocoder.yudao.module.api.trade.order.dto.TradeOrderItemRespDTO;
import cn.iocoder.yudao.module.api.trade.order.dto.TradeOrderRespDTO;
import cn.iocoder.yudao.module.api.trade.scan.dto.ScanOrderDTO;
import cn.iocoder.yudao.module.brokerage.merchant.pojo.po.AgencyBrokerageRecordDO;

/**
 * 佣金记录 Service 接口
 *
 * @author 山野羡民
 */
public interface BrokerageMerchantRecordService {

    /**
     * 订单支付成功，增加佣金
     *
     * @param order 订单信息
     */
    void addBrokerageWhenOrderPaid(TradeOrderRespDTO order);

    /**
     * 订单支付成功，增加佣金
     *
     * @param order 订单信息
     */
    void addBrokerageWhenOrderPaid(ScanOrderDTO order);

    /**
     * 取消佣金：将佣金记录，状态修改为已失效
     *
     * @param order 订单信息
     * @param orderItem 订单项信息
     */
    void cancelBrokerage(TradeOrderRespDTO order, TradeOrderItemRespDTO orderItem);

    /**
     * 解冻佣金：将待解冻的佣金记录，状态修改为已结算
     *
     * @return 解冻佣金的数量
     */
    int unfreezeRecord();

    /**
     * 解冻单条佣金记录
     *
     * @return 解冻是否成功
     */
    boolean unfreezeRecord(AgencyBrokerageRecordDO record);

}
